scMappR was updated to v1.0.7 (2021-10-16 ver). Ensure that Seurat version is 3.2.3.
This script runs scMappR (https://cran.r-project.org/web/packages/scMappR/index.html) to identify cell-type specific DE genes by calculating cell-weighted fold-changes (cwFC) for bulk DE genes with cell proportions estimated by single cell deconvolution. scMappR is run with sex-biased genes identified at each age. cwFC calculated by scMappR is further processed, however, only PD22 and 37 yielded cwFC for DE genes with high confidence. Genes predicted to be cell-type specific sex-biased genes checked for in 3 gene lists:
To run: Set working directory “To Source File Location”.
#### Libraries ####
library(dplyr)
library(Seurat)
library(reshape2)
library(ggplot2)
library(ggpubr)
library(scMappR)
library(scales)
library(colorspace)
library(ggrepel)
library(openxlsx)
library(biomaRt)
library(pheatmap)
library(knitr)
library(EDASeq)
library(WGCNA)
library(RColorBrewer)
source("scmappr_analysis_functions_2022-01-11_rmd.R")
ensembl_marts <- readRDS("input_files/ensembl_marts.rds")
rat <- ensembl_marts[["rat"]]
mouse <- ensembl_marts[["mouse"]]
Gene signature matrix is prepared for scMappR using both positive and negative gene markers identified by Seurat FindAllMarkers function. Signature matrix contains odds ratio calculated by scMappR generes_to_heatmap function.
# Make scmappr input (OR matrix) ####
dir.create("output_files/scmappr_20220111/")
pit_seurat_manual <- readRDS("output_files/seurat_v3_cheung_etal_manual_cell_anno.rds")
#
# man_markers <- FindAllMarkers(pit_seurat_manual, min.pct = 0.25)
# man_markers <-
# mutate(man_markers, cluster = gsub(" ", "_", cluster)) %>%
# mutate(cluster = gsub("/", "_", cluster)) %>%
# mutate(cluster = gsub("(", "", cluster, fixed = T)) %>%
# mutate(cluster = gsub(")", "", cluster, fixed = T))
# saveRDS(man_markers, "input_files/seurat_v3_man_markers.rds")
#
# man_markers$cluster <- factor(man_markers$cluster, levels = c("Somatotropes", "Lactotropes", "Gonadotropes", "Stem-cells_Sox2_FSC",
# "Proliferating_Pou1f1", "Vascular_Endothelia", "Corticotropes",
# "Melanotropes_intermediate", "Connective_tissue_VLMC", "Thyrotropes",
# "Immune_cells", "Pituicytes_posterior"))
man_markers <- readRDS("input_files/seurat_v3_man_markers.rds")
gene_res <- lapply(levels(man_markers$cluster), function(x) man_markers[man_markers$cluster == x, ])
names(gene_res) <- levels(man_markers$cluster)
gene_res <- lapply(gene_res, function(x) {rownames(x) <- as.character(x$gene); x})
gene_res <- lapply(gene_res, function(x) x[, c(5, 2)])
wilcoxon_scmappr <- generes_to_heatmap(gene_res, species = "mouse", make_names = F)
kable(head(wilcoxon_scmappr$OR), caption = "Example gene OR in signature matrix.")
| Somatotropes | Lactotropes | Gonadotropes | Stem-cells_Sox2_FSC | Proliferating_Pou1f1 | Vascular_Endothelia | Corticotropes | Melanotropes_intermediate | Connective_tissue_VLMC | Thyrotropes | Immune_cells | Pituicytes_posterior | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Gh | 3.867637 | 0.1062669 | 0.1901384 | 0.4168312 | 1.258029 | 0.3553396 | 0.2136421 | 0.1499571 | 0.2912815 | 0.000000 | 0.4256131 | 0.2656725 |
| Dapl1 | 1.692312 | 0.6755260 | 0.5696352 | 0.7269411 | 0.000000 | 0.6122095 | 0.5941515 | 0.5591689 | 0.6183363 | 1.229391 | 0.6137826 | 0.6125364 |
| Dlk1 | 1.682026 | 0.7366456 | 0.3757551 | 0.4593889 | 0.000000 | 0.3796643 | 0.5515856 | 0.2337082 | 0.3696772 | 1.499816 | 0.4551570 | 0.3852214 |
| Ghrhr | 1.449442 | 0.7119646 | 0.7643590 | 0.8133271 | 0.000000 | 0.7988832 | 0.7656538 | 0.7469365 | 0.7759623 | 0.000000 | 0.8074564 | 0.8020018 |
| Snhg18 | 1.392883 | 0.7996775 | 0.6637328 | 0.7395708 | 0.000000 | 0.5895890 | 0.7640083 | 0.0000000 | 1.5379984 | 0.000000 | 0.6461410 | 0.0000000 |
| Ppp1r14a | 1.270238 | 0.7196286 | 0.7659195 | 0.8128757 | 0.000000 | 1.2359143 | 0.7735070 | 0.7369251 | 2.1638462 | 0.000000 | 0.7834803 | 0.7725916 |
write.table(cbind("GENENAME" = rownames(wilcoxon_scmappr$OR), wilcoxon_scmappr$OR),
"output_files/scmappr_20220111/OR_sig_mat.txt",
quote = F, sep = "\t", col.names = T, row.names = F)
By default, scMappR uses DeconRNASeq as the deconvolution method to estimate cell proportions. Other deconvolution methods can also be run so that estiamted cell proportions from each method can be compared. These methods include WGCNA, DCQ and DeconRNASeq. It is recommended to choose the deconvolution method that best matches prior knowledge of cell proportions. In our study, we chose DeconRNASeq to estimate cell proportions for downstream analysis as the results are most similar to CIBERSORT estimated cell proportions.
# Compare scMappR deconvolution methods ####
utr_obj <- readRDS("input_files/pit_utr_2019__RUV_k2_set1_2019-07-03.rds")
utr_expr <- normCounts(utr_obj)
decon_method <- compare_deconvolution_methods(utr_expr, signature_matrix = wilcoxon_scmappr$OR)
# print(decon_method)
ggsave("output_files/scmappr_20220111/decon_compare.pdf", last_plot(), device = "pdf",
width = 8, height = 6)
# gg_def_pal <- hue_pal()(12)
gg_def_pal <- hue_pal()(length(colnames(decon_method$cellType_proportions$DeconRNAseq)))
lighter_cluster_colours <- sapply(gg_def_pal, function(x) lighten(x, amount = 0.5))
cluster_colours <- sapply(gg_def_pal, function(x) darken(x, amount = 0.2))
use_colors <- lapply(1:length(cluster_colours), function(x) c("F" = lighter_cluster_colours[[x]], "M" = cluster_colours[[x]]))
names(use_colors) <- colnames(decon_method$cellType_proportions$DeconRNAseq)
all_decon_plots <- lapply(names(decon_method$cellType_proportions), function(x) make_decon_plots(x,
file_out="output_files/scmappr_20220111/"))
print(all_decon_plots[[1]])
DeconRNASeq estimated cell proportions.
print(all_decon_plots[[2]])
DCQ estimated cell proportions.
print(all_decon_plots[[3]])
WGCNA estimated cell proportions.
scMappR is run to calculate cell-weighted fold-change (cwFC) for each DE gene identified by bulk analysis by incorporating estimated cell proportions. Here, we run scMappR for sex-biased genes from each of the profiled ages (D12, 22, 27, 32, 37).
# Run scMappR ####
bulk_DE_all <- readRDS("input_files/pit_utr_2019_de_result_list_2019-07-03.rds")
bulk_DE <- lapply(bulk_DE_all, function(x) x[abs(x$logFC) > log2(1.5) & x$FDR < 0.05, ])
bulk_normalized <- utr_expr
odds_ratio_in <- wilcoxon_scmappr$OR
meta <- pData(utr_obj)
max_proportion_change <- 10
theSpecies <- "mouse"
# setwd("output_files/")
knitr::opts_knit$set(root.dir = 'output_files/')
contrast_df <- matrix(c("Pd12F", "Pd12M", "Pd22F", "Pd22M", "Pd27F", "Pd27M", "Pd32F", "Pd32M", "Pd37F", "Pd37M",
"Pd22M", "Pd12M", "Pd27M", "Pd22M", "Pd32M", "Pd27M", "Pd37M", "Pd32M",
"Pd22F", "Pd12F", "Pd27F", "Pd22F", "Pd32F", "Pd27F", "Pd37F", "Pd32F",
"Pd37M", "Pd12M", "Pd37F", "Pd12F", "Pd37M", "Pd22M", "Pd37F", "Pd22F"),
nrow = 17, ncol = 2, byrow = T, dimnames = list(names(bulk_DE), c("case", "ctrl")))
contrast_df <- contrast_df[-grep("vs", rownames(contrast_df)), ]
run_scmappr("d37_sex", contrast_df["d37_sex", 1], contrast_df["d37_sex", 2], file_out = "./scmappr_20220111/")
## [1] "Pd37F"
## [1] "Pd37M"
run_scmappr("d32_sex", contrast_df["d32_sex", 1], contrast_df["d32_sex", 2], file_out = "./scmappr_20220111/")
## [1] "Pd32F"
## [1] "Pd32M"
run_scmappr("d27_sex", contrast_df["d27_sex", 1], contrast_df["d27_sex", 2], file_out = "./scmappr_20220111/")
## [1] "Pd27F"
## [1] "Pd27M"
run_scmappr("d22_sex", contrast_df["d22_sex", 1], contrast_df["d22_sex", 2], file_out = "./scmappr_20220111/")
## [1] "Pd22F"
## [1] "Pd22M"
run_scmappr("d12_sex", contrast_df["d12_sex", 1], contrast_df["d12_sex", 2], file_out = "./scmappr_20220111/")
## [1] "Pd12F"
## [1] "Pd12M"
scMappR cwFC results are used to select high-confidence genes which are likely cell-type specific DE genes. These high-confidence DE genes are compared to a list of known cell-type specific sex-biased genes in rat anterior pituitary from Fletcher et al. 2019. In addition, cell-type specific DE genes which have been implicated in pituitary disease and puberty disease as well as pubertal onset by GWAS are identified. Finally cell-type specific DE genes which have been reported as sex-biased in human pituitary by GTEx are also identified. If error is thrown (“cwFoldchange_gene_assigned not found”), then scMappR has found that ‘All DEGs are not normally distributed, suggesting very consistent cell-type specificity across genes.’ Hence, no cell-type specific sex-biased genes are identified.
# Process the cwFC results ####
names(gg_def_pal) <- c("Somatotropes", "Lactotropes", "Gonadotropes",
"Stem-cells_Sox2_FSC", "Proliferating_Pou1f1",
"Vascular_Endothelia", "Corticotropes",
"Melanotropes_intermediate", "Connective_tissue_VLMC",
"Thyrotropes", "Immune_cells", "Pituicytes_posterior")
gg_def_pal_scmappr <- c(gg_def_pal, "not_cw_DE" = "gray50")
fletcher_DE <- read.table("../input_files/2019_Fletcher_rat_ant_pit_sex_bias.txt",sep = "\t", header = T)
# mouse <- useEnsembl(biomart ="genes", dataset = "mmusculus_gene_ensembl")
# rat <- useEnsembl(biomart = "genes", dataset = "rnorvegicus_gene_ensembl")
# saveRDS(list(mouse = mouse, rat = rat), "input_files/ensembl_marts.rds")
check_rno_genes <- getBM(attributes = c("rgd_symbol", "ensembl_gene_id"), filters = "rgd_symbol",
values = fletcher_DE$genename, mart = rat)
colnames(check_rno_genes) <- c("genename", "ensembl_gene_id")
check_rno_genes <- full_join(fletcher_DE, check_rno_genes, by = "genename")
pit_pub_genes <- read.table("../input_files/pituitary_puberty_genes_combined_2020-09-28.txt", sep = "\t", header = T)
colnames(pit_pub_genes) <- c("genename", "source", "source_group")
gtex_genes <- melt(readRDS("../input_files/Oliva_science_2021_pit_sex_top500_genes_overlap.rds"),
id.vars = c("genename", "ENSEMBL_ID", "HUGO_gene_id", "MASH.beta", "MASH.sd", "MASH.LFSR", "chr"))
knitr::opts_knit$set(root.dir = 'output_files/scmappr_20220111/')
# setwd("scmappr_20220111")
cwfc12 <- calc_cwfc_plots(12)
Heatmap of gene-normalized cwFC for hormone-producing cell-type-specific sex-biased genes at PD12.
save_pheatmap_pdf(x=cwfc12[1],
filename=paste0("scMappR_pituitary_d12", "_sex/cwFC_val_results/d12",
"_cwFC_geneassigned_heatmap_cwFC_20120111.pdf"), width = 10)
write.xlsx(list(cwfc12[2],cwfc12[3], cwfc12[4]), paste0("scMappR_pituitary_d12", "_sex/cwFC_val_results/d12",
"_cwFC_geneassigned_genelists_overlap_20120111.xlsx"),
colNames = T,
sheetName = names(cwfc12[2:4]))
cwfc22 <- calc_cwfc_plots(22)
Heatmap of gene-normalized cwFC for hormone-producing cell-type-specific sex-biased genes at PD22.
save_pheatmap_pdf(x=cwfc22[1],
filename=paste0("scMappR_pituitary_d22", "_sex/cwFC_val_results/d22",
"_cwFC_geneassigned_heatmap_cwFC_20220111.pdf"), width = 10)
write.xlsx(list(cwfc22[2],cwfc22[3], cwfc22[4]), paste0("scMappR_pituitary_d22", "_sex/cwFC_val_results/d22",
"_cwFC_geneassigned_genelists_overlap_20220111.xlsx"),
colNames = T,
sheetName = names(cwfc22[2:4]))
cwfc27 <- calc_cwfc_plots(27)
Heatmap of gene-normalized cwFC for hormone-producing cell-type-specific sex-biased genes at PD27.
save_pheatmap_pdf(x=cwfc27[1],
filename=paste0("scMappR_pituitary_d27", "_sex/cwFC_val_results/d27",
"_cwFC_geneassigned_heatmap_cwFC_20220111.pdf"), width = 10)
write.xlsx(list(cwfc27[2],cwfc27[3], cwfc27[4]), paste0("scMappR_pituitary_d27", "_sex/cwFC_val_results/d27",
"_cwFC_geneassigned_genelists_overlap_20220111.xlsx"),
colNames = T,
sheetName = names(cwfc27[2:4]))
cwfc32 <- calc_cwfc_plots(32)
## Warning: ggrepel: 2 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: ggrepel: 3 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: ggrepel: 2 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
Heatmap of gene-normalized cwFC for hormone-producing cell-type-specific sex-biased genes at PD32.
save_pheatmap_pdf(x=cwfc32[1],
filename=paste0("scMappR_pituitary_d32", "_sex/cwFC_val_results/d32",
"_cwFC_geneassigned_heatmap_cwFC_20220111.pdf"), width = 10)
write.xlsx(list(cwfc32[2],cwfc32[3], cwfc32[4]), paste0("scMappR_pituitary_d32", "_sex/cwFC_val_results/d32",
"_cwFC_geneassigned_genelists_overlap_20220111.xlsx"),
colNames = T,
sheetName = names(cwfc32[2:4]))
cwfc37 <- calc_cwfc_plots(37)
## Warning: ggrepel: 3 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: ggrepel: 3 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Warning: ggrepel: 2 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
Heatmap of gene-normalized cwFC for hormone-producing cell-type-specific sex-biased genes at PD37.
save_pheatmap_pdf(x=cwfc37[1],
filename=paste0("scMappR_pituitary_d37", "_sex/cwFC_val_results/d37",
"_cwFC_geneassigned_heatmap_cwFC_20220111.pdf"), width = 10)
write.xlsx(list(cwfc37[2],cwfc37[3], cwfc37[4]), paste0("scMappR_pituitary_d37", "_sex/cwFC_val_results/d37",
"_cwFC_geneassigned_genelists_overlap_20220111.xlsx"),
colNames = T,
sheetName = names(cwfc37[2:4]))
cwfc_combined <- list(d12 = cwfc12[[5]], d22 = cwfc22[[5]], d27 = cwfc27[[5]], d32 = cwfc32[[5]], d37 = cwfc37[[5]])
cwfc_combined <- bind_rows(lapply(names(cwfc_combined), function(x) mutate(as.data.frame(cwfc_combined[[x]]), age = x, gene = rownames(cwfc_combined[[x]]))))
cwfc_melt <- melt(cwfc_combined)
colnames(cwfc_melt) <- c("age", "gene", "celltype", "cwFC")
cwfc_melt <- arrange(cwfc_melt, cwFC, celltype)
cwfc_melt_combined <- mutate(cwfc_melt, age_cell = paste0(celltype, "_", age))
geneorder <- unique(cwfc_melt$gene)
agecellorder <- paste0(rep(c("Somatotropes", "Lactotropes", "Gonadotropes", "Corticotropes",
"Melanotropes_intermediate", "Thyrotropes"), each=5), "_",
rep(c("d12", "d22", "d27", "d32", "d37"), 6))
use_breaks <- get_htmap_breaks(cwfc_melt_combined$cwFC,
colorRampPalette(c("orange", "white", "darkmagenta"))(255))
cwfc_melt_combined_df <- dcast(cwfc_melt_combined, gene~age_cell, value.var = "cwFC")
cwfc_melt_combined_df <- cwfc_melt_combined_df[order(match(cwfc_melt_combined_df$gene, geneorder)), ]
rownames(cwfc_melt_combined_df) <- cwfc_melt_combined_df$gene
cwfc_melt_combined_df <- dplyr::select(cwfc_melt_combined_df, -gene)
cwfc_melt_combined_df <- cwfc_melt_combined_df[, order(match(colnames(cwfc_melt_combined_df), agecellorder))]
cwfc_melt_combined_df[is.na(cwfc_melt_combined_df)] <- 0
row_anno <- data.frame(rep(c("Somatotropes", "Lactotropes", "Gonadotropes", "Corticotropes",
"Melanotropes_intermediate", "Thyrotropes"), each=5),
rep(c("d12", "d22", "d27", "d32", "d37"), 6),
paste0(rep(c("Somatotropes", "Lactotropes", "Gonadotropes", "Corticotropes",
"Melanotropes_intermediate", "Thyrotropes"), each=5), "_",
rep(c("d12", "d22", "d27", "d32", "d37"), 6)))
colnames(row_anno) <- c("celltype", "age", "cellage")
rownames(row_anno) <- row_anno$cellage
row_anno <- dplyr::select(row_anno, -cellage)
agepal <- brewer.pal(n = 9, "BuGn")[c(1,3,5,7,9)]
names(agepal) <- unique(row_anno$age)
row_anno_pal <- list(age = agepal,
celltype = gg_def_pal[names(gg_def_pal) %in% c("Somatotropes", "Lactotropes", "Gonadotropes", "Corticotropes",
"Melanotropes_intermediate", "Thyrotropes")])
p <- pheatmap(t(cwfc_melt_combined_df),
# scale = "column",
cluster_cols = T,
cluster_rows = F,
color = colorRampPalette(c("orange", "white", "darkmagenta"))(255),
breaks = use_breaks,
gaps_row = c(5,10,15,20,25,30),
annotation_row = row_anno,
annotation_colors = row_anno_pal,
cellheight = 10, cellwidth = 8)
save_pheatmap_pdf(list(p), filename="cwFC_geneassigned_heatmap_cwFC_combined_20220111.pdf",
width = 17, height = 8)
sessionInfo()
## R version 4.1.2 (2021-11-01)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Mojave 10.14.6
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8
##
## attached base packages:
## [1] stats4 stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] RColorBrewer_1.1-2 WGCNA_1.70-3
## [3] fastcluster_1.2.3 dynamicTreeCut_1.63-1
## [5] EDASeq_2.28.0 ShortRead_1.52.0
## [7] GenomicAlignments_1.30.0 SummarizedExperiment_1.24.0
## [9] MatrixGenerics_1.6.0 matrixStats_0.61.0
## [11] Rsamtools_2.10.0 GenomicRanges_1.46.1
## [13] Biostrings_2.62.0 GenomeInfoDb_1.30.0
## [15] XVector_0.34.0 IRanges_2.28.0
## [17] S4Vectors_0.32.3 BiocParallel_1.28.3
## [19] Biobase_2.54.0 BiocGenerics_0.40.0
## [21] knitr_1.37 pheatmap_1.0.12
## [23] biomaRt_2.50.1 openxlsx_4.2.5
## [25] ggrepel_0.9.1 colorspace_2.0-2
## [27] scales_1.1.1 scMappR_1.0.7
## [29] ggpubr_0.4.0 ggplot2_3.3.5
## [31] reshape2_1.4.4 Seurat_3.2.3
## [33] dplyr_1.0.7
##
## loaded via a namespace (and not attached):
## [1] rappdirs_0.3.3 rtracklayer_1.54.0
## [3] scattermore_0.7 R.methodsS3_1.8.1
## [5] tidyr_1.1.4 bit64_4.0.5
## [7] irlba_2.3.5 aroma.light_3.24.0
## [9] DelayedArray_0.20.0 R.utils_2.11.0
## [11] data.table_1.14.2 rpart_4.1-15
## [13] hwriter_1.3.2 KEGGREST_1.34.0
## [15] RCurl_1.98-1.5 doParallel_1.0.16
## [17] generics_0.1.1 preprocessCore_1.56.0
## [19] GenomicFeatures_1.46.3 ScaledMatrix_1.2.0
## [21] cowplot_1.1.1 RSQLite_2.2.9
## [23] RANN_2.6.1 future_1.23.0
## [25] bit_4.0.4 spatstat.data_2.1-2
## [27] xml2_1.3.3 httpuv_1.6.5
## [29] assertthat_0.2.1 xfun_0.29
## [31] hms_1.1.1 jquerylib_0.1.4
## [33] evaluate_0.14 promises_1.2.0.1
## [35] fansi_1.0.0 restfulr_0.0.13
## [37] progress_1.2.2 dbplyr_2.1.1
## [39] igraph_1.2.11 DBI_1.1.2
## [41] htmlwidgets_1.5.4 reshape_0.8.8
## [43] purrr_0.3.4 ellipsis_0.3.2
## [45] backports_1.4.1 gprofiler2_0.2.1
## [47] annotate_1.72.0 deldir_1.0-6
## [49] sparseMatrixStats_1.6.0 vctrs_0.3.8
## [51] SingleCellExperiment_1.16.0 ROCR_1.0-11
## [53] abind_1.4-5 cachem_1.0.6
## [55] withr_2.4.3 checkmate_2.0.0
## [57] sctransform_0.3.2 prettyunits_1.1.1
## [59] goftest_1.2-3 cluster_2.1.2
## [61] lazyeval_0.2.2 crayon_1.4.2
## [63] labeling_0.4.2 glmnet_4.1-3
## [65] pkgconfig_2.0.3 nlme_3.1-153
## [67] nnet_7.3-16 rlang_0.4.12
## [69] globals_0.14.0 lifecycle_1.0.1
## [71] miniUI_0.1.1.1 downloader_0.4
## [73] filelock_1.0.2 BiocFileCache_2.2.0
## [75] rsvd_1.0.5 polyclip_1.10-0
## [77] GSVA_1.42.0 lmtest_0.9-39
## [79] graph_1.72.0 Matrix_1.4-0
## [81] carData_3.0-5 Rhdf5lib_1.16.0
## [83] zoo_1.8-9 base64enc_0.1-3
## [85] ggridges_0.5.3 png_0.1-7
## [87] viridisLite_0.4.0 rjson_0.2.21
## [89] bitops_1.0-7 R.oo_1.24.0
## [91] KernSmooth_2.23-20 rhdf5filters_1.6.0
## [93] blob_1.2.2 DelayedMatrixStats_1.16.0
## [95] shape_1.4.6 stringr_1.4.0
## [97] parallelly_1.30.0 gProfileR_0.7.0
## [99] jpeg_0.1-9 rstatix_0.7.0
## [101] ggsignif_0.6.3 beachmat_2.10.0
## [103] lpSolve_5.6.15 memoise_2.0.1
## [105] GSEABase_1.56.0 magrittr_2.0.1
## [107] plyr_1.8.6 ica_1.0-2
## [109] zlibbioc_1.40.0 compiler_4.1.2
## [111] BiocIO_1.4.0 pcaMethods_1.86.0
## [113] fitdistrplus_1.1-6 listenv_0.8.0
## [115] patchwork_1.1.1 pbapply_1.5-0
## [117] htmlTable_2.4.0 Formula_1.2-4
## [119] MASS_7.3-54 mgcv_1.8-38
## [121] limSolve_1.5.6 tidyselect_1.1.1
## [123] stringi_1.7.6 highr_0.9
## [125] yaml_2.2.1 BiocSingular_1.10.0
## [127] latticeExtra_0.6-29 grid_4.1.2
## [129] sass_0.4.0 tools_4.1.2
## [131] future.apply_1.8.1 parallel_4.1.2
## [133] ComICS_1.0.4 rstudioapi_0.13
## [135] foreign_0.8-81 foreach_1.5.1
## [137] gridExtra_2.3 farver_2.1.0
## [139] Rtsne_0.15 digest_0.6.29
## [141] shiny_1.7.1 quadprog_1.5-8
## [143] Rcpp_1.0.7 car_3.0-12
## [145] broom_0.7.11 later_1.3.0
## [147] RcppAnnoy_0.0.19 httr_1.4.2
## [149] AnnotationDbi_1.56.2 XML_3.99-0.8
## [151] tensor_1.5 reticulate_1.22
## [153] splines_4.1.2 uwot_0.1.11
## [155] spatstat.utils_2.3-0 plotly_4.10.0
## [157] xtable_1.8-4 jsonlite_1.7.2
## [159] spatstat_1.64-1 R6_2.5.1
## [161] Hmisc_4.6-0 pillar_1.6.4
## [163] ADAPTS_1.0.21 htmltools_0.5.2
## [165] mime_0.12 glue_1.6.0
## [167] fastmap_1.1.0 codetools_0.2-18
## [169] utf8_1.2.2 lattice_0.20-45
## [171] bslib_0.3.1 tibble_3.1.6
## [173] curl_4.3.2 leiden_0.3.9
## [175] GO.db_3.14.0 zip_2.2.0
## [177] survival_3.2-13 rmarkdown_2.11
## [179] munsell_0.5.0 rhdf5_2.38.0
## [181] GenomeInfoDbData_1.2.7 iterators_1.0.13
## [183] impute_1.68.0 HDF5Array_1.22.1
## [185] gtable_0.3.0